/**
 * pharma-business - 28 mai 2011 guillaume
 */
package org.bspv.pharma.business;

import java.util.List;

import org.bspv.pharma.model.Consumable;
import org.bspv.pharma.model.Place;
import org.bspv.pharma.model.StandardEquipment;
import org.bspv.pharma.model.StandardEquipmentDetail;
import org.bspv.pharma.model.Supply;

/**
 * Interface du service métier de consultation des fournitures.
 * 
 * @author guillaume
 * 
 */
public interface InventoryTrackingBusinessService {

    /**
     * Retourne la liste des fournitures de l'emplacement en parametre.
     * 
     * @param place
     *            Emplacement
     * @return Liste de <code>Supply</code>
     */
    List<Supply> findSupplies(Place place);

    /**
     * Retourne la liste des consommables de l'emplacement en parametre.
     * 
     * @param place
     *            Emplacement
     * @return Liste de <code>Consumable</code>
     */
    List<Consumable> findConsumables(Place place);

    /**
     * Retourne la liste des fournitures de l'emplacement en parametre (egalement les fournitures.
     * presentes dans les sous-emplacements)
     * 
     * @param place
     *            Emplacement
     * @return Liste de <code>Supply</code>
     */
    List<Supply> findAllSupplies(Place place);

    /**
     * Retourne la liste des consommables de l'emplacement en parametre (egalement les fournitures.
     * presentes dans les sous-emplacements)
     * 
     * @param place
     * @return Liste de <code>Consumable</code>
     */
    List<Consumable> findAllConsumables(Place place);

    /**
     * Retourne l'equipement standard valide de la place en parametre ou null s'il n'existe pas.
     * 
     * @param place
     *            Emplacement
     * @return Equipement standard
     */
    StandardEquipment findStandardEquipmentFromPlace(Place place);

    /**
     * Retourne la liste des details d'equipement standard pour l'emplacement en paramètre et pour
     * ses sous emplacements.
     * 
     * @param place
     *            Emplacement
     * @return Liste des détails d'armement standard
     */
    List<StandardEquipmentDetail> findAllStandardEquipmentDetails(Place place);

    /**
     * Retourne la liste des sous-emplacements de l'emplacement en parametre.
     * 
     * @param place
     *            Emplacement
     * @return
     */
    List<Place> findSubPlaces(Place place);
}
